Function: c-forward-<>-arglist
c-forward-<>-arglist is a byte-compiled function defined in
cc-engine.el.gz.
Signature
(c-forward-<>-arglist ALL-TYPES)
Source Code
;; Defined in /usr/src/emacs/lisp/progmodes/cc-engine.el.gz
(defun c-forward-<>-arglist (all-types)
;; The point is assumed to be at a "<". Try to treat it as the open
;; paren of an angle bracket arglist and move forward to the
;; corresponding ">". If successful, the point is left after the
;; ">" and t is returned, otherwise the point isn't moved and nil is
;; returned. If ALL-TYPES is t then all encountered arguments in
;; the arglist that might be types are treated as found types.
;;
;; The variable `c-parse-and-markup-<>-arglists' controls how this
;; function handles text properties on the angle brackets and argument
;; separating commas.
;;
;; `c-restricted-<>-arglists' controls how lenient the template
;; arglist recognition should be.
;;
;; This function records identifier ranges on
;; `c-record-type-identifiers' and `c-record-ref-identifiers' if
;; `c-record-type-identifiers' is non-nil.
;;
;; This function might do hidden buffer changes.
(let ((start (point))
(old-found-types (copy-hash-table c-found-types))
;; If `c-record-type-identifiers' is set then activate
;; recording of any found types that constitute an argument in
;; the arglist.
(c-record-found-types (if c-record-type-identifiers t)))
(if (catch 'angle-bracket-arglist-escape
(setq c-record-found-types
(c-forward-<>-arglist-recur all-types)))
(progn
(when (consp c-record-found-types)
(setq c-record-type-identifiers
;; `nconc' doesn't mind that the tail of
;; `c-record-found-types' is t.
(nconc c-record-found-types c-record-type-identifiers)))
t)
(setq c-found-types old-found-types)
(goto-char start)
nil)))